package modelo;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;


@Entity
@Table(name="evento",schema="public")
@PrimaryKeyJoinColumn(name="cod_evento")
public class Evento implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name="cod_evento")
	private String codEvento;
	@Column(name="nombre_evento")
	private String nombreEvento;
	@Column(name="fecha_inicio_evento")
	private Date fechaIncio;
	@Column(name="fecha_fin_evento")
	private Date fechaFin;
	@OneToOne(cascade= CascadeType.ALL)
	@JoinColumn(name="cod_tipo_evento")
	private TipoEvento tipoEvento;
	@OneToOne(cascade= CascadeType.ALL)
	@JoinColumn(name="cod_lugar")
	private Lugar lugar;
	@Column(name= "costo_evento")
	private Integer costo;
	
	@ManyToMany(cascade= CascadeType.ALL)
	@JoinTable(name = "seccionevento", joinColumns = { @JoinColumn(name ="cod_evento") }, inverseJoinColumns = { @JoinColumn(name ="cod_seccion") })
	private Set<Seccion> secciones= new HashSet<Seccion>();
	
	public Evento() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Evento(String codEvento, String nombreEvento, Date fechaIncio,
			Date fechaFin, TipoEvento tipoEvento, Lugar lugar, Integer costo) {
		super();
		this.codEvento = codEvento;
		this.nombreEvento = nombreEvento;
		this.fechaIncio = fechaIncio;
		this.fechaFin = fechaFin;
		this.tipoEvento = tipoEvento;
		this.lugar = lugar;
		this.costo = costo;
	}

	public String getCodEvento() {
		return codEvento;
	}

	public void setCodEvento(String codEvento) {
		this.codEvento = codEvento;
	}

	public String getNombreEvento() {
		return nombreEvento;
	}

	public void setNombreEvento(String nombreEvento) {
		this.nombreEvento = nombreEvento;
	}

	public Date getFechaIncio() {
		return fechaIncio;
	}

	public void setFechaIncio(Date fechaIncio) {
		this.fechaIncio = fechaIncio;
	}

	public Date getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	public TipoEvento getTipoEvento() {
		return tipoEvento;
	}

	public void setTipoEvento(TipoEvento tipoEvento) {
		this.tipoEvento = tipoEvento;
	}

	public Lugar getLugar() {
		return lugar;
	}

	public void setLugar(Lugar lugar) {
		this.lugar = lugar;
	}

	public Integer getCosto() {
		return costo;
	}

	public void setCosto(Integer integer) {
		this.costo = integer;
	}

	public Set<Seccion> getSecciones() {
		return secciones;
	}

	public void setSecciones(Set<Seccion> secciones) {
		this.secciones = secciones;
	}
	
	
	
}
